]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dateMenu: Don't manipulate passed events
authorBjörn Daase <bjoern@daase.net>
Tue, 15 Feb 2022 10:21:48 +0000 (11:21 +0100)
committerBjörn Daase <bjoern@daase.net>
Mon, 21 Feb 2022 08:24:11 +0000 (09:24 +0100)
The event passed to formatEventTime() is reused at a later point.
Therefore, we are not allowed to manipulate the event directly.
This fixes an issue where the user clicks on a multi-day all-day event
the second time before the event gets garbage collected and the event
then is one day shorter.

Fixes 528ee01fef6e5ca2303fc766be29a854d8ee928b

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2184>

js/ui/dateMenu.js

index 8ed1a579b0b6855812206933124fc4f0ff99bece..55c12ebe13f90617bd81fc72234de62039455689 100644 (file)
@@ -175,7 +175,7 @@ class EventsSection extends St.Button {
 
     _formatEventTime(event) {
         const eventStart = event.date;
-        const eventEnd = event.end;
+        let eventEnd = event.end;
 
         const allDay =
             eventStart.getTime() === this._startDate.getTime() && eventEnd.getTime() === this._endDate.getTime();
@@ -203,8 +203,10 @@ class EventsSection extends St.Button {
 
             const startYear = eventStart.getFullYear();
 
-            if (endsAtMidnight)
+            if (endsAtMidnight) {
+                eventEnd = new Date(eventEnd);
                 eventEnd.setDate(eventEnd.getDate() - 1);
+            }
 
             const endYear = eventEnd.getFullYear();